Two or more communications-enabled devices may exchange messages with one another over an Internet Protocol (IP) network. A message may pass through several routers or other network appliances in the IP network from a sending device to a recipient device. The sending device may be referred to as the source device or the originating device. The recipient device may be referred to as the receiving device or the destination device.
Each message may be segmented into many data packets. Each data packet may include many data fields, for example a header with a source address, a destination address, data fields related to quality of service and other parameters, and a data payload representing message contents such as text data, audio data, video data, instructions to be processed by a destination device, measured or calculated values, and so on. The individual data packets from which a complete message is formed may not all be subjected to the same processing by network appliances in the IP network. Some data packets may follow network different paths from the originating device to the destination device compared to other data packets from the same message. Some data packets may be delayed relative to other packets, possibly causing data packets to arrive at the destination device in a different order than the order in which they were sent, or with varying time delays between received data packets. Data packets may take many hops between the source and destination devices, possibly passing through many network appliances such as routers, bridges, switches, or other network-attached devices. At each hop across a router or other network appliance, a packet received by the network appliance may be retransmitted accurately and efficiently or may instead be dropped, delayed, or have data in the packet header omitted or altered. Dropped packets may have been lost, expired, or prevented from making more than a selected number of hops.
Some messages are relatively insensitive to dropped or delayed packets. When dropped or delayed packets are detected, retransmission of the packets may be requested or error correction schemes may be applied to fill in missing data for reconstruction of the originally transmitted message. For example, a message corresponding to a text message, document, or digital photograph may be sent from a source system to a destination device with some packets delayed or retransmitted, possibly causing a delay in the time when the reconstructed message is available on the destination device, but otherwise not impairing the accuracy, utility, or aesthetic value of the reconstructed message at the destination.
While some messages may be insensitive to dropped or delayed packets, other messages are preferably received without variations in time delays between packets, dropped packets, or alteration of data values in packet headers or payloads. For example, dropped, delayed, or altered packets may decrease the quality of video images for streaming video services, decrease sound quality for streaming audio services, or interfere with accurate real-time monitoring and control of industrial processes. For monitoring and control applications, dropped, altered, or delayed packets may lead to poor process results, higher process costs, damage to equipment, or unsafe operation.
A packet header may include a code value corresponding to a request that routers and other network appliances intervening between the source and destination devices provide differentiated service to the packet. Differentiated service may include, for example, retransmitting a received packet at a high priority compared to other packets, perhaps without alteration of packet contents or added time delays. A code value representing priority for data packet processing may be referred to as a Differentiated Services Code Point (DSCP) value. DSCP values may be assigned in accord with standards for IP networks and may represent different categories or priorities against dropped or delayed packets. For example, a DSCP value of “0” (zero) may be included in a header for a packet with relatively low priority. A low priority may be assigned to a packet that may be delayed without impairing the utility or perceived quality of the reconstructed message. A different DSCP value may be assigned to a packet that to be transmitted at a higher priority. A network appliance capable of responding to the DSCP value may delay retransmitting a packet with low priority, for example a packet with a DSCP value of “0”, to provide a faster response to another packet with higher priority.
Some network appliances, for example some legacy routers operating in contemporary IP networks, do not include the capability of detecting or responding to a QOS-related field such as a DSCP value in a packet header. Some network appliances may not provide differentiated service in response to DSCP values in received packets. Some network appliances may omit DSCP values from retransmitted packets. Network appliances that do not provide differentiated service may cause dropped or delayed packets in the IP network. When a network appliance strips a DSCP value from a retransmitted packet, other network appliances receiving the altered packet may not provide differentiated service even if the other appliances have the capability to do so.
Various network utilities have been available for monitoring, testing, and troubleshooting messaging services in an IP network. Ping, an example of a network utility, may generate messages in accord with the Internet Control Message Protocol (ICMP). Ping transmits an echo request packet from an originating device, also referred to as the source device, to a specified destination device. An echo request packet may also be referred to as a Ping packet. When the echo request packet is received by the destination device at an IP address specified in the echo request packet's header, the destination device may respond by sending an echo packet back to the IP address for the source device. Receiving an echo packet in response to an echo request packet enables the source device to confirm that a communication pathway existed to the destination device at the time Ping was executed.
A source device may use a response from another device to measure network parameters related to QOS, for example a time interval from sending a Ping message until an echo packet returns. An echo packet may take the form of an echo reply, an ICMP message generated in response to an echo request. The measured time interval from transmission of the Ping message from the originating device to receipt of the echo packet by another device may be referred to as the travel time. Ping may be used by a source system to determine that an echo packet was never received or was not received within a specified time limit, enabling the source system to detect dropped packets or predict a rate of packet loss. Ping may further show a statistical summary of response messages and may include one or more results such as the response packets received, the minimum, maximum and mean round-trip times, and the standard deviation of the mean.
Traceroute is another example of a network utility. Traceroute captures information about an echo request packet sent from a source device, for example a host computer system, to a destination device, for example a Voice Over Internet Protocol (VOIP) telephone, an Internet-enabled television, or another computer system such as an Internet host computer. Information returned by Traceroute may include a count of how many hops occurred from to the destination from the source, a measurement of time for each hop, the address of each network device included in a communications path from the source to the destination, and other data.
Traceroute may be used to send echo request packets with low hop count fields. The hop count field value specifies a maximum number of hops the packet may be subjected to before the packet is stopped. If the echo request packet's hop count decrements to zero, the packet is terminated and a return packet indicating that the echo request packet terminated is sent from the network appliance that received the packet to the source system for the traceroute. If the echo request packet arrives at the destination before the hop count decrements to zero, the destination device sends an echo packet back to the source system. The travel time for a packet with a hop count of one gives the travel time across the first hop. The travel time for a packet with a hop count of two gives the travel time across the first and second hop. Subtracting the travel time for a hop count of one from the travel time for a hop count of two gives the travel time across the second hop. Successive hop count packet travel time measurements may be used to determine how many hop counts are required to send a message from the source to the destination, and the travel time across each hop.
Some devices connected to an IP network respond to a received Ping message efficiently, swapping the destination address and the source address in the received packet, then retransmitting the packet back to the originating device without other alteration of the packet's payload or header fields. An efficient response minimizes the number of processor cycles and amount of memory consumed in the destination device and reduces delays on other messages queued for transmission from the destination device.
Other devices respond to a Ping message inefficiently, taking many clock cycles for a local processor in the destination device to allocate memory for a new packet, copy the contents of the received echo request packet to the new packet with the source and destination addresses swapped, and transmit the new packet as the response to the originating device and then destroy the echo request packet received from the originating device. An inefficiently created echo reply packet may not include every data value from the echo request packet. Some fields may be omitted or values may be altered. For example, the DSCP field in an echo request packet or other received packet may not be copied to an echo packet or other retransmitted packet. The time required to complete the copying process may cause time delays for echo packets or for other message packets queued for transmission.
Alternatives to Ping for evaluating IP network performance include, for example, operating a remote agent on a destination device to determine parameters related to QOS. A remote agent, possibly implemented as computer software executing on a destination device, may exchange messages with software executing on the originating device to measure, estimate, or predict network time delays, hop times, packet transmission rates, packet loss rates, and other parameters which may affect the quality or utility of subsequent messages. For example, a remote agent executing on an Internet-enabled television may interact with an originating device for a video streaming service to measure values related to quality of service such as rates at which data packets are received, counts of dropped packets, variations in time intervals between received packets, and other factors, any of which may impact the perceived quality of video images viewed on the television. The originating device may send messages to the remote agent at increasing packet rates until the remote agent reports an unacceptable number of dropped or delayed packets.
The originating device may modify transmitted data in response to information received from a remote agent, for example by reducing a rate of packet transmission, reducing a number of packets transmitted, changing digital filter parameters or data compression parameters, or other modifications of transmitted data that may reduce resolution or refresh rates in displayed images. Similarly, a remote agent on a VOIP telephone may request a reduction in a number of transmitted data packets from an originating device in response to a measurement of available network bandwidth. A reduction in the number of data packets in a VOIP message stream may correspond to lower audio resolution or lower audio dynamic range for voice communication.
Some destination devices may not be capable of hosting a remote agent suitable for making preferred quality of service measurements. On some networked devices, security measures may interfere with operation of a remote agent. Or, a remote agent installed on a destination device may be incompatible with software executing on an originating device.